package com.study.kt._01grammar._01basic

import java.util.*

fun main() {
    //testRange()
    //testReRange()
    //testReveresRange()
    //testArray()
    testArrayFilter()
}

// 筛选
fun testArrayFilter() {
    val array = arrayOf("hello", "world", "hello world", "goodbye")
    array.filter { it.length > 5 }
        .map { it.toUpperCase(Locale.getDefault()) }
        .sorted()
        .forEach { println(it) }
}

//数组
fun testArray() {
    val arr1 = arrayOf(1, 2)
    //可以定义指定类型的数组
    val boolArr = booleanArrayOf(true, false, true)

    //数组修改 ：通过下标
    arr1[0] = 100
    arr1.forEach { println(it) }
    //通过set修改
    boolArr.set(1, true)

    // 生成Array
    val genArray: Array<Int> = Array(20) { it * 2 }
    for (i in genArray) {
        println("genArray==$i")
    }

}

//反转区间
fun testReveresRange() {
    val range = 1..10
    val reRange = range.reversed()
    for (i in reRange) {
        println(i)
    }
}

// 定义并添加步进值
fun testStep() {
    for (i in 1..10 step 2) {
        println(i)
    }
}

//反向区间
fun testReRange() {
    //这是一种错误的定义方式
    val range1 = 10..1
    //使用关键字定义
    val range2 = 10 downTo 1
    for (i in range2) {
        println(i)
    }
}

//区间
fun testRange() {
    //方式一 .. 包含头尾
    val range1 = 1..100
    //方式二 until 包含头不包含尾
    val range2 = 1 until 100
    //字符区间
    val charRange = 'a'..'z'
    for (i in range2) {
        println(i)
    }
}